Efficient internet protocol prefix match support on No-SQL and/or non-relational databases

ABSTRACT

Systems and methods for automatically executing an efficient longest internet protocol prefix match on non-relational and/or No-SQL databases, such as Cassandra. Clustering prefixes around common and/or standard prefix lengths ensures efficient use of Cassandra&#39;s underlying mechanisms and minimizes costly scan operations.

CROSS REFERENCE TO RELATED APPLICATIONS

The present non-provisional utility application claims priority under 35U.S.C. § 119(e) to provisional application No. 62/527,324 entitled“Efficient Internet Protocol Prefix Match Support On No-SQL And/OrNon-Relational Databases” filed on Jun. 30, 2017, and which is herebyincorporated by reference herein.

TECHNICAL FIELD

Aspects of the present disclosure relate to Internet Protocol (“IP”)networking and IP prefix matching, and in particular, to executingqueries in a non-relational and/or non-standard query language(“No-SQL”) database to identify a longest IP prefix match.

BACKGROUND

A longest IP prefix match is a specific type of operation or query usedin IP networking environments to identify a routing entry that has thelongest common IP prefix with a destination IP address. Traditionally,IP longest prefix match lookups have been enabled using Radix tree datastructures to process and store the prefixes.

However, the use of longest IP prefix match queries and Radix datastructures within non-relational and/or No-SQL databases may presentchallenges. For example, using a Radix tree data structure within anon-relational and/or No-SQL database typically requires the executionof multiple sequential database queries, which adds latency to thelongest IP prefix match operation. Moreover, typical non-relationaland/or No-SQL databases lack mechanisms to execute a longest IP prefixmatch query efficiently, which ultimately limits the use ofnon-relational and/or No-SQL databases in certain network environmentdeployments.

BRIEF DESCRIPTION OF THE FIGURES

The foregoing and other objects, features, and advantages of the presentdisclosure set forth herein will be apparent from the followingdescription of particular embodiments of those inventive concepts, asillustrated in the accompanying drawings. Also, in the drawings the likereference characters refer to the same parts throughout the differentviews. The drawings depict only typical embodiments of the presentdisclosure and, therefore, are not to be considered limiting in scope.

FIG. 1 is a block diagram illustrating a computing environment forexecuting longest IP prefetch match queries in No-SQL and/ornon-relational databases, according to various aspects of the presentdisclosure.

FIG. 2 is a flowchart illustrating an example process and/or method forexecuting longest IP prefetch match queries in No-SQL and/ornon-relational databases, according to aspects of the presentdisclosure.

FIG. 3A-3B are examples of database tables, according to aspects of thepresent disclosure.

FIG. 4 is an example computing device specifically configured andimplemented for executing longest IP prefetch matches in No-SQL and/ornon-relational databases, according to aspects of the presentdisclosure.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Various embodiments of the disclosure are discussed in detail below.While specific implementations are discussed, it should be understoodthat this is done for illustration purposes only. A person skilled inthe relevant art will recognize that other components and configurationsmay be used without parting from the spirit and scope of the disclosure.Thus, the following description and drawings are illustrative and arenot to be construed as limiting. Numerous specific details are describedto provide a thorough understanding of the disclosure. However, incertain instances, well-known or conventional details are not describedin order to avoid obscuring the description. References to one or anembodiment in the present disclosure can be references to the sameembodiment or any embodiment; and, such references mean at least one ofthe embodiments.

Reference to “one embodiment” or “an embodiment” means that a particularfeature, structure, or characteristic described in connection with theembodiment is included in at least one embodiment of the disclosure. Theappearances of the phrase “in one embodiment” in various places in thespecification are not necessarily all referring to the same embodiment,nor are separate or alternative embodiments mutually exclusive of otherembodiments. Moreover, various features are described which may beexhibited by some embodiments and not by others.

The terms used in this specification generally have their ordinarymeanings in the art, within the context of the disclosure, and in thespecific context where each term is used. Alternative language andsynonyms may be used for any one or more of the terms discussed herein,and no special significance should be placed upon whether or not a termis elaborated or discussed herein. In some cases, synonyms for certainterms are provided. A recital of one or more synonyms does not excludethe use of other synonyms. The use of examples anywhere in thisspecification including examples of any terms discussed herein isillustrative only, and is not intended to further limit the scope andmeaning of the disclosure or of any example term. Likewise, thedisclosure is not limited to various embodiments given in thisspecification.

Without intent to limit the scope of the disclosure, examples ofinstruments, apparatus, methods and their related results according tothe embodiments of the present disclosure are given below. Note thattitles or subtitles may be used in the examples for convenience of areader, which in no way should limit the scope of the disclosure. Unlessotherwise defined, technical and scientific terms used herein have themeaning as commonly understood by one of ordinary skill in the art towhich this disclosure pertains. In the case of conflict, the presentdocument, including definitions will control.

Additional features and advantages of the disclosure will be set forthin the description which follows, and in part will be obvious from thedescription, or can be learned by practice of the herein disclosedprinciples. The features and advantages of the disclosure can berealized and obtained by means of the instruments and combinationsparticularly pointed out in the appended claims. These and otherfeatures of the disclosure will become more fully apparent from thefollowing description and appended claims, or can be learned by thepractice of the principles set forth herein.

Overview

Disclosed herein are systems, methods, and computer-readable media forIP Prefix matching. The systems, methods, and computer-readable mediainclude defining a plurality of tables in a non-relational database,each table of the plurality of tables indexed based on a first portionof an internet protocol prefix, a second portion of the internetprotocol prefix, and a mask length associated with the internet protocolprefix, and wherein query results from the non-relational database arereturned according to a descending order based on the second portion ofthe internet protocol prefix and the mask length associated with theinternet protocol prefix. The systems, methods, and computer-readablemedia include executing in parallel, a query, for a longest prefix matchof an internet protocol address, at each table of the plurality oftables, thereby causing a lookup for the longest prefix match of theinternet protocol address across the non-relational database, whereinthe descending order ensures that a result from the query willcorrespond to a most specific prefix associated with the internetprotocol address. The systems, methods, and computer-readable mediainclude based on the executing in parallel, obtaining a set of queryresults and identifying a specific result from the set of query results.

Description

Aspects of the present involve systems, methods, and computerreadable-mediums that enable the efficient execution of IP networking“longest prefix match” queries in non-relational and/or No-SQLdatabases, such as for example a Cassandra-like (i.e., column basedkey-valued) No-SQL database. Generally speaking, the longest IP prefixmatch refers to an algorithm used in IP networking to select a specificentry from a table, such as a forwarding table of a router thatcorresponds to a queried destination IP address. The most specific ofthe matching table entries—the one with the longest subnet mask—iscalled the longest prefix match, as it is also the entry where thelargest number of leading address bits of the destination address (i.e.,the searched IP address) match those in the table entry. Thus, a queryfor the longest prefix match returns (if such entry exists) the prefixthat both matches the prefix of the destination IP address and isdetermined to be the longest prefix out of all the prefixes in thetable.

To enable a longest prefix match search, a database schema is generatedand/or otherwise obtained by the system that enables the system togenerate a plurality of tables within in the database that are indexedbased on a portion of an IP prefix or prefixes. Additionally, theentries of the tables are ordered according to a descending order (theresultant set of data records are sorted in a descending order based onthe value of the remaining portion of the IP prefixes) to handleoverlapping IP prefixes and/or gaps in the IP prefixes. Based on thegenerated tables, the system may automatically execute one or morelongest IP prefix match operations to identify the longest prefix for aqueried internet protocol address. During execution of the query, all ofthe generated tables of the database may be queried in parallel. Foreach table, the query may return a result identifying a potential IPprefix match, resulting in a set of results being obtained. The systemselects the most specific IP prefix from the set of results as thelongest prefix match.

The present application and various examples described herein will referto the Cassandra non-relational and/or no-SQL database, but thedisclosure is not so limited. Rather, it is contemplated that variousaspects of the present disclosure can be applied to other key-value,column-based (or wide column) No-SQL databases, such as BigTable. HBaseor ScyllaDB, among others.

FIG. 1 illustrates an example computing environment 100 forautomatically executing longest IP prefetch match queries in No-SQLand/or Cassandra-like databases, according to one embodiment. Asillustrated. FIG. 1 include various computing devices communicatingthrough one or more networks 110 a. 100 b. The one or more networks maybe an IP-based telecommunications network, the Internet, an intranet, alocal area network, a wireless local network, a content distributionnetwork, or any other type of communications network, as well ascombinations of networks. For example, in one particular embodiment, thenetwork 100 may be a telecommunications network including fiber-opticpaths between various network elements, such as servers, switches,routers, and/or other optical telecommunications network devices thatinterconnect to enable receiving and transmitting of information betweenthe various elements as well as users of the network.

In particular, the computing environment 100 includes a server computingdevice 102 that is in communication with communication devices (122 ₁,122 ₂, . . . , 122 _(n)) located at one or more geographic locations.The communication devices (122 ₁, 122 ₂, . . . , 122 _(n)) may be anyof, or any combination of, a personal computer; handheld computer;mobile phone; digital assistant; smart phone; server; application; andthe like. In one embodiment, each of the communication devices (122 ₁,122 ₂, . . . , 122 _(n)) may include a processor-based platform thatoperates on any suitable operating system, such as Microsoft® Windows®,Linux®, and/or the like that is capable of executing software.

The server computing device 102, may be a processing device thatfunctionally connects or otherwise communicates (e.g., using the one ormore networks 110 a, 100 b) with the communication devices (122 ₁, 122₂, . . . , 122 _(n)) included within the computing environment 100. Auser interested in executing a query and/or command to identify thelongest IP prefix match for a given IP address may interact with one ofthe communication devices (122 ₁, 122 ₂, . . . , 122 _(n)) to initiate arequest, which may be received by the server computing device 102. Moreparticularly, the communication devices (122 ₁, 122 ₂, . . . , 122 _(n))may also include a user-interface, such as a browser application (i.e.,a graphical-user interface) or a command-line interface (i.e., a textinterface) and/or the like, to generate a query for identifying thelongest IP prefetch match in a No-SQL and/or non-relational database. Inresponse, the server computing device 102 may transmit instructions thatmay be processed and/or executed to generate, or otherwise display, a UIfor receiving a query and/or command to identify the longest IP prefixmatch.

The processing device 102 includes a database 120, a database schemagenerator 122, and a processor 124. The database 120 may be a database,data store, storage and/or the like, implemented using No-SQL and/ornon-relational mechanisms for data storage and retrieval. Stateddifferently, the database 120 is a database that provides a mechanism tostore and retrieve data using mechanisms other than the tabularrelations used in relational databases. In particular, the database is aNo-SQL key-value column-based database. In one specific example, thedatabase 120 may a Cassandra database, which is a highly scalable,high-performance distributed database designed to handle large amountsof data across many commodity servers, providing high availability withno single point of failure. Alternatively, the database 120 may be othercommon No-SQL databases such as: BigTable, HBase, ScyllaDB, etc.

The database schema generator 122 generates a database schema for thedatabase 120. Generally speaking, a database schema is a blueprint thatrepresents the logical configuration of all or part of a database. Adatabase schema can exist as both a visual representation and/or as aset of procedures that govern the database. The procedures are expressedin a data definition language, such as No-SQL for general non-relationaldatabases. Referring to a Cassandra database, the Cassandra QueryLanguage (“CQL”) for Cassandra non-relational databases may be used. Thedatabase schema indicates how the entities—including tables, views,stored procedures, etc.—that make up the database relate to one another,and more.

The processor 124 executes queries and retrieves data requested in thequeries from the database 120. In some embodiments, the processor 124may execute queries against multiple tables of the database 120 inparallel. In particular, the processor 124 executes multiple queries inparallel at different nodes of the database 120 (e.g., nodes of acluster in a Cassandra database). The execution time of a single queryin a single node is similar for all nodes, but several queries may beexecuted at the same time. The more nodes, the faster the query per node(since less data is in each node). Stated differently, the more nodes,the more distributed the prefixes can be across the nodes and thus theless prefixes have to be scanned in each node. By dividing the worknecessary to run a statement among multiple processes, the processor 124can run the query more quickly than if only a single process is used.The processor 124 may be any type of processing unit capable ofexecuting database queries in parallel.

Referring now to FIG. 2 and with reference to FIG. 1, an illustrativeprocess 200 for executing queries to identify longest IP prefix matchesfor a given internet protocol address in a non-relational and/or No-SQLdatabase is provided. The method will be explained referring to thenon-relational and/or No-SQL database Cassandra. It is contemplated,however, that the process may involve other non-relational and/or No-SQLdatabases.

As illustrated, process 200 begins at 202, with obtaining a databaseschema for the Cassandra database. In one embodiment, the obtaineddatabase schema may be defined based on prefixes of internet protocols(referred to herein as “IP prefixes”). In particular, the databaseschema may be designed so that any tables generated from the databaseschema are indexed based on portions of an IP prefix. More specifically,the database schema may be defined so that a first portion of the IPprefix is used as an index for a given partition of the Cassandradatabase, and a second portion of the prefix (including the prefix mask)is used to define the internal order within the partition as descending.

In a Cassandra database, a table can have a number of partitions. Apartition represents a set of rows (i.e., two or more rows in thetable). Thus, each table has a number of rows included within apartition. Each row is referenced by a “compound primary key”, alsocalled the row key. There are a number of columns in a row but thenumber of columns can vary in different rows. For example, one row in atable can have three columns whereas another row in the same table canhave 10 columns.

A compound primary key is comprised of one or more columns that arereferenced in the primary key. One component of the compound primary keyis called “partition key”, whereas the other component is called theclustering key. A partition key is the primary lookup to find a specificset of rows (i.e. a partition). A clustering key controls how the rowsare ordered in a partition. The following are different variations ofprimary keys, where C1, C2, C3, . . . and so on represent columns in thetable:

-   -   C1: Primary key has only one partition key and no cluster key.    -   (C1, C2): Column C1 is a partition key and column C2 is a        cluster key.    -   (C1, C2, C3, . . . ): Column C1 is a partition key and columns        C2, C3, and so on make the cluster key.        When the compound key is C1, C2, C3, then the first key, C1,        becomes the partition key, and the rest of the keys become part        of the cluster key.

As noted above, the purpose of the partition key is to identify thepartition or node in a cluster that stores a particular row, as all rowssharing the same partition key are stored on the same physical node. Inparticular, when data is read or written from the cluster, a functioncalled “Partitioner” is used to compute the hash value of the partitionkey. The generated hash value is used to determine the node/partitionwhich contains that row. For example, rows whose partition key valuesrange from 1000 to 1234 may reside in node A, and rows with partitionkey values range from 1235 to 2000 may reside in node B. In such anexample, if a row contains partition key whose hash value is 1233 thenit will be stored in node A.

As noted above, the purpose of the clustering key is to controls how therows are ordered in a partition. The sorting of data is based oncolumns, which are included in the clustering key. Using a descendingorder for the second portion or last portion of the prefix (i.e., subprefixes) and masks on table creation forces more specific prefixes tobe checked before less specific. Thus, a descending order ensures that ahit will always be for the most specific possible prefix for a giveninput address (i.e. 1.1.1.0/24 would be checked before than 1.1.0.0/16).

Referring again to FIG. 2, at 204, the database schema is used togenerate a series of tables within the Cassandra database. Inparticular, a command may be executed that generates tables inaccordance with the generated database schema. For example, assuming theobtained database schema was defined for a Cassandra database, thefollowing command could be executed to generate one or more tables basedon the database schema: CREATE TABLE ipv4slash 16 (firstpart int,lastpart int, mask int, address text, PRIMARY KEY (first part, lastpart, mask)) WITH CLUSTERING ORDER BY (last part DESC, mask DESC). Thedatabase schema may be created/defined once during database creation andinitialization, before any lookup processes are executed.

The number of tables generated may be based on prefix lengths. Forexample, a different table may be generated per each possible prefixlength. In another example, the system may split the prefixes intochunks of equal length size, e.g., split IPv4 space in half (/0, /16).In yet another example, a table may be generated per each possible masklength. e.g. 128 tables for IPv6. However both ends (few tables or a lotof tables) are not ideal, since they do not reflect the realdistribution of IP addresses.

In one specific example, the number of generated tables should largeenough to ensure an efficient exact-match process. To do so, the numberof tables generated should reflect the real distribution of masklengths. For instance for a prefix distribution similar to the Internetthe system may generate the following tables: For IPv4: /0, /16, /22,/24, /32. For IPv6: /0, /19, /29, /32, /36, /40, /44, /48, /64, /128.Such numbers roughly reflect the distribution of prefix lengths on thepublic Internet and serve as an estimator for the prefix lengthdistribution. In some embodiments, special tables, covering largegeneral policies (i.e. /0) and mobility use-cases (i.e. /32 and /128)are included to complement the data from Internet prefixes. FIG. 3Aprovides an illustration of a series of tables that may be generated. Asillustrated, there are four different tables generated within thedatabase, i.e. table “/0” 302, “/16” 304, “/24” 306, and “/32” 308.Thus, the system clusters prefixes around common and/or standard prefixlengths to ensure efficient use of Cassandra's underlying mechanisms andminimizes costly scan operation.

Referring again to FIG. 2, at 206, one or more IP queries attempting toidentify the “Longest Prefix Match” of a given IP address may beexecuted at the generated tables of the database and query results maybe received. In one embodiment, the queries may be executed in parallelto improve the overall global lookup time required to identify thematch. Due to the arrangement of the generated tables, the Cassandradatabase is able to query the tables using the “firstpart” as an exactmatch and the “lastpart” for a scan search. For example, to query for192.168.50.44 in a table that stores prefixes split via /16, the commandmay include: SELECT*FROM ipv4slash16 WHERE firstpart=49320 ANDlastpart>=12844 limit 2. The result of executing the command is twoconsecutive rows from the table, which may be used to determine whetherthe returned results are valid, as will be described in detail below.

Referring again to FIG. 2, at 208, the received query results may bevalidated. A positive result, or a hit from execution of the query atthe Cassandra database does not ensure a successful longest prefixmatch. Rather, there are possible scenarios where finding a hit in theone table does not ensure an existing suitable prefix for the searchedIP address. For example, one is the presence of ‘gaps’ in the IP space(i.e. an IP address may not find a suitable prefix that covers it on agiven table). In such an embodiment, a mask check may be used to ensurethat the retrieved prefix is suitable for the input IP address. Inparticular, each querier must analyze the reply it got for itsparticular table (if any) to find if it is a positive hit for theparticular requested IP address. In order to do that, the original IPaddress must be checked against the prefix+mask returned in the query tosee if the IP address is actually covered by the prefix or not.

Alternatively, query results including prefixes with same address butdifferent mask may be received. For example, overlapping prefixes thatshare the same prefix address but differ in the mask length (e.g.1.1.0.0/16 and 1.1.0.0/24) may be received. Results in such a scenarioare validated or otherwise addressed by using limit >1, so contiguousrows on the table can be retrieved besides the first available hit. Ifthe first encountered entry is not suitable due to its mask, the nextone can be checked to see if it is a less specific mask for the sameprefix. For instance a query for 1.1.1.1 may return 1.1.0.0/24 and1.1.0.0/16, the first result is not valid for the input address, but thesecond one is. A limit of at least 2 is recommended to support one-levelof overlapping, which is a common case in many deployments. If theentries returned by the database for the table are all checked and noneis a suitable one, a second query with a higher limit should be executedto return the rest. The first valid entry (i.e., the first suitableentry that passes the validity checks) is returned by the querier to thebroker, if such entry exists.

At 210, the output of set of results are analyzed to determine the mostspecific longest prefix match of the searched IP address. To do so, eachof the results in the set of results are analyzed in order, startingwith the most specific result. As soon as there is a hit on a table,there is no need to check any other results returned from any other lessspecific tables. For example, for the case of IPv4, if there was asuccessful hit on prefix with mask /32, there is no need to check anyother less specific hits, enabling results to be delivered faster.

FIGS. 3A-3B illustrate an example of a Longest Prefix match for theaddress 1.1.1.130. In the illustrated embodiment of FIG. 3A, there arefour different tables, “/0” 302, “/16” 304, “/24” 306, and “/32” 308, inthe database. A broker 301 (e.g., a process or instruction executed bythe processor 124) replicates and disseminates the request across thedifferent queriers 310, 312, 314, and 316 (also an instruction orprocess) which in turn query one of the tables “/0” 302. “/16” 304,“/24” 306, and “/32” 308. For this example we assume that the limit forthe number of entries returned per query is 2 (i.e. at most two entrieswill be returned per table by the database).

In FIG. 3B, the responses come back to the queriers 310, 312, 314, and316. For tables “/0” 302 and “/32” 308, there was no hit, but in tables“/16” 304, “/24” 306 there were two hits in each. The role of thequerier (e.g., querier 310, 312, 314, and 316) is then to discriminatebased on the mask. In the case of Q0 310, the first result passes themask check so it is returned to the broker 301. In the case of Q24 312,the first entry retrieved (1.1.1.0/26) does not pass the mask check(i.e. 1.1.1.0/26 does not cover the requested IP 1.1.1.130), but thesecond one does pass and it is the one returned to the broker 301 (notethat if the second one had not passed, another query with higher limitwould have been needed). As soon as the broker gets the negativeresponse from Q32 316 and the positive response from Q24 314, it is ableto reply with the result from Q24 314. It does not need to wait for anyother querier to return its results.

FIG. 4 illustrates an example of a suitable computing and networkingenvironment 400 that may be used to implement various aspects of thepresent disclosure described in FIG. 1-2. As illustrated, the computingand networking environment 400 includes a general purpose computingdevice 400, although it is contemplated that the networking environment400 may include one or more other computing systems, such as personalcomputers, server computers, hand-held or laptop devices, tabletdevices, multiprocessor systems, microprocessor-based systems, set topboxes, programmable consumer electronic devices, network PCs,minicomputers, mainframe computers, digital signal processors, statemachines, logic circuitries, distributed computing environments thatinclude any of the above computing systems or devices, and the like.

Components of the computer 400 may include various hardware components,such as a processing unit 402, a data storage 404 (e.g., a systemmemory), and a system bus 406 that couples various system components ofthe computer 400 to the processing unit 402. The system bus 406 may beany of several types of bus structures including a memory bus or memorycontroller, a peripheral bus, and a local bus using any of a variety ofbus architectures. For example, such architectures may include IndustryStandard Architecture (ISA) bus. Micro Channel Architecture (MCA) bus,Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA)local bus, and Peripheral Component Interconnect (PCI) bus also known asMezzanine bus.

The computer 400 may further include a variety of computer-readablemedia 408 that includes removable/non-removable media andvolatile/nonvovlatile media, but excludes transitory propagated signals.Computer-readable media 408 may also include computer storage media andcommunication media. Computer storage media includesremovable/non-removable media and volatile/nonvolatile media implementedin any method or technology for storage of information, such ascomputer-readable instructions, data structures, program modules orother data, such as RAM, ROM. EEPROM, flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other optical diskstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or any other medium that may be used tostore the desired information/data and which may be accessed by thecomputer 400. Communication media includes computer-readableinstructions, data structures, program modules or other data in amodulated data signal such as a carrier wave or other transportmechanism and includes any information delivery media. The term“modulated data signal” means a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. For example, communication media may include wired mediasuch as a wired network or direct-wired connection and wireless mediasuch as acoustic. RF, infrared, and/or other wireless media, or somecombination thereof. Computer-readable media may be embodied as acomputer program product, such as software stored on computer storagemedia.

The data storage or system memory 404 includes computer storage media inthe form of volatile/nonvolatile memory such as read only memory (ROM)and random access memory (RAM). A basic input/output system (BIOS),containing the basic routines that help to transfer information betweenelements within the computer 400 (e.g., during start-up) is typicallystored in ROM. RAM typically contains data and/or program modules thatare immediately accessible to and/or presently being operated on byprocessing unit 402. For example, in one embodiment, data storage 404holds an operating system, application programs, and other programmodules and program data.

Data storage 404 may also include other removable/non-removable,volatile/nonvolatile computer storage media. For example, data storage404 may be: a hard disk drive that reads from or writes tonon-removable, nonvolatile magnetic media; a magnetic disk drive thatreads from or writes to a removable, nonvolatile magnetic disk; and/oran optical disk drive that reads from or writes to a removable,nonvolatile optical disk such as a CD-ROM or other optical media. Otherremovable/non-removable, volatile/nonvolatile computer storage media mayinclude magnetic tape cassettes, flash memory cards, digital versatiledisks, digital video tape, solid state RAM, solid state ROM, and thelike. The drives and their associated computer storage media, describedabove and illustrated in FIG. 4, provide storage of computer-readableinstructions, data structures, program modules and other data for thecomputer 400.

A user may enter commands and information through a user interface 410or other input devices such as a tablet, electronic digitizer, amicrophone, keyboard, and/or pointing device, commonly referred to asmouse, trackball or touch pad. Other input devices may include ajoystick, game pad, satellite dish, scanner, or the like. Additionally,voice inputs, gesture inputs (e.g., via hands or fingers), or othernatural user interfaces may also be used with the appropriate inputdevices, such as a microphone, camera, tablet, touch pad, glove, orother sensor. These and other input devices are often connected to theprocessing unit 402 through a user interface 410 that is coupled to thesystem bus 406, but may be connected by other interface and busstructures, such as a parallel port, game port or a universal serial bus(USB). A monitor 412 or other type of display device is also connectedto the system bus 406 via an interface, such as a video interface. Themonitor 412 may also be integrated with a touch-screen panel or thelike.

The computer 400 may operate in a networked or cloud-computingenvironment using logical connections of a network interface or adapter414 to one or more remote devices, such as a remote computer. The remotecomputer may be a personal computer, a server, a router, a network PC, apeer device or other common network node, and typically includes many orall of the elements described above relative to the computer 400. Thelogical connections depicted in FIG. 4 include one or more local areanetworks (LAN) and one or more wide area networks (WAN), but may alsoinclude other networks. Such networking environments are commonplace inoffices, enterprise-wide computer networks, intranets and the Internet.

When used in a networked or cloud-computing environment, the computer400 may be connected to a public and/or private network through thenetwork interface or adapter 414. In such embodiments, a modem or othermeans for establishing communications over the network is connected tothe system bus 406 via the network interface or adapter 414 or otherappropriate mechanism. A wireless networking component including aninterface and antenna may be coupled through a suitable device such asan access point or peer computer to a network. In a networkedenvironment, program modules depicted relative to the computer 400, orportions thereof, may be stored in the remote memory storage device.

The foregoing merely illustrates the principles of the disclosure.Various modifications and alterations to the described embodiments willbe apparent to those skilled in the art in view of the teachings herein.It will thus be appreciated that those skilled in the art will be ableto devise numerous systems, arrangements and methods which, although notexplicitly shown or described herein, embody the principles of thedisclosure and are thus within the spirit and scope of the presentdisclosure. From the above description and drawings, it will beunderstood by those of ordinary skill in the art that the particularembodiments shown and described are for purposes of illustrations onlyand are not intended to limit the scope of the present disclosure.References to details of particular embodiments are not intended tolimit the scope of the disclosure.

For clarity of explanation, in some instances the present technology maybe presented as including individual functional blocks includingfunctional blocks comprising devices, device components, steps orroutines in a method embodied in software, or combinations of hardwareand software.

Any of the steps, operations, functions, or processes described hereinmay be performed or implemented by a combination of hardware andsoftware services or services, alone or in combination with otherdevices. In some embodiments, a service can be software that resides inmemory of a portable device and/or one or more servers of a contentmanagement system and perform one or more functions when a processorexecutes the software associated with the service. In some embodiments,a service is a program, or a collection of programs that carry out aspecific function. In some embodiments, a service can be considered aserver. The memory can be a non-transitory computer-readable medium.

In some embodiments the computer-readable storage devices, mediums, andmemories can include a cable or wireless signal containing a bit streamand the like. However, when mentioned, non-transitory computer-readablestorage media expressly exclude media such as energy, carrier signals,electromagnetic waves, and signals per se.

Methods according to the above-described examples can be implementedusing computer-executable instructions that are stored or otherwiseavailable from computer readable media. Such instructions can comprise,for example, instructions and data which cause or otherwise configure ageneral purpose computer, special purpose computer, or special purposeprocessing device to perform a certain function or group of functions.Portions of computer resources used can be accessible over a network.The computer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, firmware, orsource code. Examples of computer-readable media that may be used tostore instructions, information used, and/or information created duringmethods according to described examples include magnetic or opticaldisks, solid state memory devices, flash memory, USB devices providedwith non-volatile memory, networked storage devices, and so on.

Devices implementing methods according to these disclosures can comprisehardware, firmware and/or software, and can take any of a variety ofform factors. Typical examples of such form factors include servers,laptops, smart phones, small form factor personal computers, personaldigital assistants, and so on. Functionality described herein also canbe embodied in peripherals or add-in cards. Such functionality can alsobe implemented on a circuit board among different chips or differentprocesses executing in a single device, by way of further example.

The instructions, media for conveying such instructions, computingresources for executing them, and other structures for supporting suchcomputing resources are means for providing the functions described inthese disclosures.

Although a variety of examples and other information was used to explainaspects within the scope of the appended claims, no limitation of theclaims should be implied based on particular features or arrangements insuch examples, as one of ordinary skill would be able to use theseexamples to derive a wide variety of implementations. Further andalthough some subject matter may have been described in languagespecific to examples of structural features and/or method steps, it isto be understood that the subject matter defined in the appended claimsis not necessarily limited to these described features or acts. Forexample, such functionality can be distributed differently or performedin components other than those identified herein. Rather, the describedfeatures and steps are disclosed as examples of components of systemsand methods within the scope of the appended claims.

What is claimed is:
 1. A method comprising: defining, using a computingdevice, a plurality of tables in a non-relational database, each tableof the plurality of tables storing one or more internet protocolprefixes and indexed based on a first portion of an internet protocolprefix, a second portion of the internet protocol prefix, and a masklength associated with the internet protocol prefix, and wherein queryresults from the plurality of tables in the non-relational database arereturned according to a descending order based on the second portion ofthe internet protocol prefix and the mask length associated with theinternet protocol prefix; executing in parallel, using the computingdevice, a query, for a longest prefix match of an internet protocoladdress, at each table of the plurality of tables, thereby causing alookup for the longest prefix match of the internet protocol addressacross the non-relational database, wherein the descending order ensuresthat a result from the query will correspond to a most specific prefixamong the internet protocol prefixes stored in the plurality of tables;based on the executing in parallel, obtaining, using the computingdevice, a set of one or more query results from each of at least two ofthe plurality of tables; and identifying, using the at least onecomputing device, a specific result from the set of one or more queryresults, the specific result comprising the most specific longest prefixmatch of the queried internet protocol address among the set of one ormore query results.
 2. The method of claim 1, wherein the specificresult includes a potential internet protocol prefix match returned fromthe query executed for at least one of the tables of the plurality oftables.
 3. The method of claim 1, wherein the specific result comprisesa prefix and a mask, the method further comprising validating thespecific result by comparing the internet protocol address to the prefixand mask.
 4. The method of claim 3, wherein the specific result isidentified and returned, before other results of the set of queryresults are analyzed, if the prefix is more specific than any otherprefix yet to be analyzed.
 5. The method of claim 1, wherein theplurality of tables are generated based on a distribution of prefixesacross a plurality of mask lengths.
 6. The method of claim 1, whereinthe non-relational database is at least one of a Cassandra database, aBigTable database, a HBase database, and a ScyllaDB database.
 7. Asystem comprising: one or more computer readable storage media; andinstructions stored on the one or more computer readable storage media,wherein the instructions, when executed by one or more computingdevices, cause the one or more computing devices to: define a pluralityof tables in a non-relational database, each table of the plurality oftables storing one or more internet protocol prefixes and indexed basedon a first portion of an internet protocol prefix, a second portion ofthe internet protocol prefix, and a mask length associated with theinternet protocol prefix, and wherein query results from the pluralityof tables in the non-relational database are returned according to adescending order based on the second portion of the internet protocolprefix and the mask length associated with the internet protocol prefix;execute in parallel a query, for a longest prefix match of an internetprotocol address, at each table of the plurality of tables, therebycausing a lookup for the longest prefix match of the internet protocoladdress across the non-relational database, wherein the descending orderensures that a result from the query will correspond to a most specificprefix among the internet protocol prefixes stored in the plurality oftables; based on the executing in parallel, obtaining a set of one ormore query results from each of at least two of the plurality of tables;and identify a specific result from the set of one or more queryresults, the specific result comprising the most specific longest prefixmatch of the queried internet protocol address among the set of one ormore query results.
 8. The system of claim 7, wherein the specificresult includes a potential internet protocol prefix match returned fromthe query executed for at least one of the tables of the plurality oftables.
 9. The system of claim 7, wherein the specific result comprisesa prefix and a mask, the method further comprising validating thespecific result by comparing the internet protocol address to the prefixand mask.
 10. The system of claim 9, wherein the specific result isidentified and returned, before other results of the set of queryresults are analyzed, if the prefix is more specific than any otherprefix yet to be analyzed.
 11. The system of claim 7, wherein theplurality of tables are generated based on a distribution of prefixesacross a plurality of mask lengths.
 12. The system of claim 7, whereinthe non-relational database is at least one of a Cassandra database, aBigTable database, a HBase database, and a ScyllaDB database.
 13. Anon-transitory computer readable storage medium encoded withinstructions, the instructions executable by one or more computingdevices, comprising: defining a plurality of tables in a non-relationaldatabase, each table of the plurality of tables storing one or moreinternet protocol prefixes and indexed based on a first portion of aninternet protocol prefix, a second portion of the internet protocolprefix, and a mask length associated with the internet protocol prefix,and wherein query results from the plurality of tables in thenon-relational database are returned according to a descending orderbased on the second portion of the internet protocol prefix and the masklength associated with the internet protocol prefix; executing inparallel, a query, for a longest prefix match of an internet protocoladdress, at each table of the plurality of tables, thereby causing alookup for the longest prefix match of the internet protocol addressacross the non-relational database, wherein the descending order ensuresthat a result from the query will correspond to a most specific prefixamong the internet protocol prefixes stored in the plurality of tables;based on the executing in parallel, obtaining a set of one or more queryresults from each of at least two of the plurality of tables; andidentifying a specific result from the set of one or more query results,the specific result comprising the most specific longest prefix match ofthe queried internet protocol address among the set of one or more queryresults.
 14. The non-transitory computer readable medium of claim 13,wherein the specific result includes a potential internet protocolprefix match returned from the query executed for at least one of thetables of the plurality of tables.
 15. The non-transitory computerreadable medium of claim 13, wherein the specific result comprises aprefix and a mask, the method further comprising validating the specificresult by comparing the internet protocol address to the prefix andmask.
 16. The non-transitory computer readable medium of claim 15,wherein the specific result is identified and returned, before otherresults of the set of query results are analyzed, if the prefix is morespecific than any other prefix yet to be analyzed.
 17. Thenon-transitory computer readable medium of claim 13, wherein theplurality of tables are generated based on a distribution of prefixesacross a plurality of mask lengths.
 18. The non-transitory computerreadable medium of claim 13, wherein the non-relational database is atleast one of a Cassandra database, a BigTable database, a HBasedatabase, and a ScyllaDB database.